// 从相对路径'../utils/ajax.js'文件中导入名为'ajax'和'isLogin'的模块，
// 通常'ajax'用于发送网络请求，'isLogin'可能用于检查用户是否登录的相关操作
import {ajax, isLogin} from '../utils/ajax.js'
// 导入jQuery库，用于方便地操作DOM元素、处理页面元素的事件绑定等功能
import '../lib/jquery.js'
// 导入layui库，layui是一个前端UI框架，可能在页面中用于实现一些特定的界面组件和交互效果（具体取决于项目中的使用情况）
import '../lib/layui/layui.js';

// 定义并立即执行一个异步的自执行函数，用于封装相关的用户登录状态检查及后续操作逻辑
(async () => {
    // 调用导入的'isLogin'函数，该函数返回一个包含用户登录状态相关信息的对象，通过解构赋值获取'status'（登录状态码）和'user'（用户信息对象，若已登录）
    let {status, user} = await isLogin();
    // 如果用户登录状态码'status'等于1（这里假设1表示已登录的状态码，具体含义取决于后端接口的定义），说明用户已登录
    if (status == 1) {
        // 使用jQuery选择器选中类名为'off'的元素，并移除其'active'类名，一般用于切换元素的显示样式，
        // 比如控制某个与未登录状态相关的元素隐藏或者改变外观，使其不处于激活状态
        $('.off').removeClass('active');
        // 使用jQuery选择器选中类名为'on'的元素，并添加'active'类名，通常用于切换元素的显示样式，
        // 使其呈现出已登录状态下的相应外观，比如显示与已登录相关的操作按钮等
        $('.on').addClass('active');

        // 使用jQuery选择器选中类名为'nickname'的元素，通过'text'方法将已登录用户的昵称（从'user.nickname'获取）设置为该元素的文本内容，
        // 实现在页面上展示用户昵称的功能
        $('.nickname').text(user.nickname);
        // 使用jQuery选择器选中类名为'self'的元素，绑定一个点击事件处理函数，当该元素被点击时，
        // 通过修改浏览器的当前页面地址（location.href）跳转到'./self.html'页面，一般这里可能是跳转到用户的个人中心页面
        $('.self').on('click', () => location.href = './self.html')

        // 使用jQuery选择器选中类名为'logout'的元素，绑定一个点击事件处理函数，用于处理用户点击退出登录按钮的操作
        $('.logout').on('click', async () => {
            // 弹出一个确认框，询问用户是否确定要退出登录，若用户点击取消（返回false），则直接结束当前函数执行，不进行后续注销操作
            if (!confirm('确定要退出登录吗？')) return;
            // 从浏览器的本地存储（localStorage）中获取名为'uid'的项，一般'uid'是用于标识用户的唯一编号，可能在注销等操作中需要传递给后端
            let id = localStorage.getItem('uid');
            // 从浏览器的本地存储（localStorage）中获取名为'token'的项，'token'通常是用户登录后的认证令牌，用于在请求中进行身份验证
            let token = localStorage.getItem('token');
            // 使用导入的'ajax'模块的'get'方法发送一个GET请求到'/users/logout'接口，传递用户的'id'作为请求参数（通过'params'对象），
            // 同时在请求头（headers）中带上'authorization'字段并设置为'token'值，用于向服务器验证用户身份并请求执行退出登录操作。
            // 解构赋值从返回的数据中提取出'data'属性里的'code'属性，一般'code'用于表示请求结果的状态码
            let {data: {code}} = await ajax.get('/users/logout', {params: {id}, headers: {authorization: token}});
            // 如果请求返回的状态码'code'不等于1（这里假设1表示注销成功的状态码，具体由后端接口定义），则弹出警告框提示用户'注销失败'，并结束当前函数执行
            if (code!= 1) return alert('注销失败');
            // 若注销成功，从本地存储中删除名为'token'的项，清除用户的登录认证令牌，使后续请求无法再以该用户身份进行验证
            localStorage.removeItem('token');
            // 同样从本地存储中删除名为'uid'的项，清除用户的唯一标识，进一步确保用户相关的登录信息被清理干净
            localStorage.removeItem('uid');
            // 使用jQuery选择器选中类名为'off'的元素，并添加'active'类名，切换元素显示样式，使其呈现出未登录状态下的外观，比如显示登录按钮等
            $('.off').addClass('active');
            // 使用jQuery选择器选中类名为'on'的元素，并移除'active'类名，改变元素显示样式，使其不再显示已登录相关的操作按钮等内容
            $('.on').removeClass('active');
        })
    }
})()